Тезисное обоснование архитектурных решений
Версия: 1.0 Дата: 25.04.2026 Статус: Утверждён
Каждое нетривиальное архитектурное решение в документации vitiana-api-platform обосновано тезисами в самом документе.
Не «делаем так, потому что лучше». А «делаем так — потому что A, B, C; альтернативы X и Y отклонены по причинам D и E; ограничения F принимаются осознанно».
Это касается всех новых документов, всех существенных правок, и всех структурных решений (декомпозиция, выбор паттерна, выбор стратегии).
Зафиксировано 25.04.2026.
Главный тезис
Архитектурный документ без обоснования — это утверждение, не решение. Решение должно быть проверяемым и оспариваемым — это требует явных тезисов, альтернатив и компромиссов.
Тезисное обоснование — не бюрократия и не ритуал, а способ:
- остановить деградацию через «делаем как привыкли»;
- обнаружить скрытые конфликты с другими документами раньше, чем они материализуются в коде;
- передать контекст следующему архитектору или разработчику без потерь;
- защитить решение от размывания при ревью или давлении сроков.
Что входит в тезисное обоснование
Минимальный набор для любого ключевого решения в документе:
1. Цель решения
Чему служит это решение в контексте бизнес-целей платформы.
Не «улучшить производительность» (это пустая формулировка), а «сократить latency p99 на partner search до 200мс, чтобы выдерживать SLA для tier-2 партнёров».
2. Тезисы поддержки (3-5 пунктов)
Конкретные причины выбора. Каждый тезис — самостоятельное утверждение, которое можно проверить или оспорить.
Хорошо:
- «Каноничная модель не должна зависеть от структур поставщиков, потому что замена supplier должна быть локальным изменением слоя приёма данных.»
- «Коммерческая фиксация (
Quote) должна быть отдельной сущностью, потому что её validity window и applied commercial policy не существуют ни вOffer(нестабильно), ни вBooking(уже завершено).»
Плохо:
- «Так лучше для масштабируемости.» (без раскрытия)
- «Это современный подход.» (без объяснения, почему именно этот, и какие альтернативы отклонены)
3. Альтернативы и почему они отклонены
Минимум 1-2 альтернативы для нетривиальных решений с явным обоснованием отклонения.
Пример:
- «Альтернатива: использовать одну таблицу
entitiesс типизацией черезentity_typeдля всех canonical-сущностей. Отклонено, потому что (а) теряется query optimization per-domain; (б) усложняется retention policy; (в) governance contour не может вести field-level lineage в untyped storage.»
4. Принимаемые ограничения и trade-off
Любое решение имеет цену. Эта цена должна быть явно зафиксирована.
Примеры:
- «Принимаем: рост сложности слоя приёма данных. Это компенсируется тем, что вся остальная платформа изолирована от supplier specifics.»
- «Принимаем: невозможность простой одиночной миграции в будущем при смене storage. Это компенсируется тем, что storage class разделение позволяет миграцию по slice.»
5. Связь с другими решениями платформы
Каждое решение работает не в изоляции. Указываю, на какие соседние документы / решения опирается, и что данный выбор поддерживает дальше по цепочке.
Пример:
- «Опирается на: правило 00000 (платформа задаёт canonical model),
domain-model.md(entities),eventing-and-queue-baseline.md(event-driven обновления).» - «Поддерживает:
commercial-model.md(actor-aware quote),partner-finance-and-clearing.md(commercial commitment trace).»
6. Связь с современными лучшими практиками
Указываю, на какой индустриальный паттерн опирается решение и почему он применим к нашей задаче.
Пример:
- «Применяем event sourcing для booking lifecycle, аналогично паттерну в Stripe payment processing. Применим, потому что бронирование имеет схожие требования к audit trail, идемпотентности (idempotency) и replay capability.»
Где обоснование обязательно
Обязательно (без исключений)
- Все решения по доменной модели (
domain-model.mdи связанные). - Все решения по surface contracts (что попадает на agency / partner / B2C / S2S / internal).
- Все решения по storage policy (truth class, retention, isolation strength).
- Все решения по event taxonomy и event channel families.
- Все решения по commercial model (tiers, dynamic pricing, settlement boundaries).
- Все решения по compliance и legal posture.
- Все решения по deployment phases и compute packaging.
- Все решения по multi-tenant isolation strength.
Допустимо без подробного обоснования
- Очевидные следствия уже зафиксированных решений.
- Нумерация, форматирование, стилистика.
- Ссылки и backlinks.
Как структурировать обоснование в документе
В каждом крупном документе — раздел ## Обоснование решений или ## Принципы и тезисы.
В каждом разделе доменного решения — подраздел ### Почему именно так с тезисами.
Альтернатива для коротких решений — каждое архитектурное утверждение сопровождается короткой формулировкой **Почему:** сразу под ним. Это работает для коротких решений в текстовом потоке.
Длинные альтернативы — отдельный раздел с явной структурой:
## Почему [решение]
**Цель:** ...
**Тезисы:**
1. ...
2. ...
3. ...
**Альтернативы:**
- A: отклонено, потому что ...
- B: отклонено, потому что ...
**Принимаемые ограничения:**
- ...
**Связь с другими решениями:**
- Опирается на: ...
- Поддерживает: ...
**Современные практики:**
- ...
Запрещённые формулировки
Документ не публикуется (даже как Черновик), если содержит:
- «Так принято в индустрии.» — без указания где, почему и применимо ли к нам.
- «Это просто работает.» — без обоснования.
- «Все так делают.» — без раскрытия.
- «Лучшая практика.» — без указания источника и применимости.
- «Так быстрее.» — без указания, насколько и за счёт чего.
- «Это очевидно.» — если очевидно, тезис формулируется в одну строку, не пропускается.
Как применять
Перед публикацией каждого документа задаю вопросы:
- Есть ли в документе нетривиальные решения?
- Каждое из них обосновано тезисно?
- Указаны ли альтернативы и причины отклонения?
- Зафиксированы ли trade-off?
- Указаны ли связи с другими документами и современными практиками?
Документ без обоснования ключевых решений — переписывается.
При коротком документе или операционной заметке — обоснование в форме **Почему:** строки. При большом доменном документе — отдельный раздел.
В архивных документах (*-old-YYYY-MM-DD.md) — не правится, оставляется как есть.
Связанная документация
- Закон 00000 — платформа главенствует над поставщиками — каждое правило обосновано тезисно.
- Современные лучшие практики верхнеуровневых платформ — обоснование через современные практики обязательно.
- Развитие без деградации — каждое исключение для временных решений требует тезисного обоснования + плана миграции.
- Эластичное масштабирование и упаковка по фазам — каждый триггер фазы обоснован тезисно.
- Удержание контекста связанных документов — обоснование включает явные связи с другими документами.
- Закон разработки документации платформы — прослеживание связей включает явное обоснование каждой связи.